The world depends on computer networks for business tools, government applications, and individual necessities and interests, so that the overwhelming majority desires to keep these networks secured and running. The increasing complexity and scale of modern computer networks, however, has far outpaced the development of tools to manage their operation. A significant fraction of the human time and cost of operating networks is devoted to finding and diagnosing problems, yet numerous vulnerabilities and other bugs still go undetected. These bugs lead to loss of service, performance degradation, unauthorized intrusions, potential leakage of sensitive information, and many other problems. Eliminating all such problems is challenging: the scale, diversity, and dynamic nature of deployed networks means dealing with all potential interactions of heterogeneous devices and protocols is complex and becoming ever more complicated.